Propuesta TFM

Roberto Sánchez

2023-10-17

Árboles filogenéticos

Ejemplo
Ejemplo

GTDB

Niveles de Taxonomía
Niveles de Taxonomía

Problema

Representar árboles grandes es complicado.

Incluso un subconjunto pequeño del árbol es confuso.

Ej: Mycobacteriales, 1827 hojas

gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |> 
  ggtree()

Objetivos:

Agrupar

gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |>
  ggtree() |> 
  scale_tree_to_level("family")

Agrupar

tree_myco <- gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |>
  ggtree() |> 
  scale_tree_to_level("family") |> 
  collapse_tree_to_level("family")

tree_myco

La claridad aumenta mucho, pero la pérdida de información es mínima

Enfrentar a datos

Por ejemplo, el tamaño del genoma, obtenido de GTDB

box_myco <- plot_stat_boxplot(tree_myco, level =  "family")

myco <- plot_tree_and_boxplots(tree_myco, box_myco)

myco

Así puedo agrupar el árbol por taxones

Anotaciones interactivas

tree_interactive <- gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |>
  ggtree() |> 
  scale_tree_to_level("family") |> 
  annotate_taxon_nodes("family") |> # Aquí anoto los taxones
  collapse_tree_to_level("family") |>
  add_tips() # Anotaciones para las hojas 

girafe(ggobj = tree_interactive)

Valores de bootstrap

tree_interactive <- gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |>
  ggtree() |> 
  scale_tree_to_level("family") |> 
  annotate_taxon_nodes("family") |> 
  collapse_tree_to_level("family") |>
  add_bootstraps() |> # Anotaciones de bootstrap 
  add_tips() 

girafe(ggobj = tree_interactive)

Boxplots interactivos

tree_interactive <- gtdb_tree |> 
  subset_tree_to_taxon("order", "Mycobacteriales") |>
  ggtree() |> 
  scale_tree_to_level("family") |> 
  annotate_taxon_nodes("family") |> 
  collapse_tree_to_level("family") |>
  add_bootstraps() |> 
  add_tips() 

boxplot_interactive <- plot_stat_boxplot(
  tree_interactive, 
  stat = "gc_percentage",
  level = "family", 
  show_quartiles = TRUE
)

myco_interactive <- girafe(
  ggobj = plot_tree_and_boxplots(
    tree_interactive,
    boxplot_interactive)
  )

Boxplots interactivos

myco_interactive

Este gráfico me resulta muy fácil de explorar:

Observaciones

Zoom in: Mycobacteriaceae

tree_interactive <- gtdb_tree |> 
  subset_tree_to_taxon("family", "Mycobacteriaceae") |>
  ggtree() |> 
  scale_tree_to_level("genus") |> 
  annotate_taxon_nodes("genus") |> 
  collapse_tree_to_level("genus") 

boxplot_interactive <- plot_stat_boxplot(
  tree_interactive, 
  stat = "gc_percentage",
  level = "genus", 
  show_datapoints = TRUE # Añado la nube de puntos
)

myco_interactive_2 <- girafe(
  ggobj = plot_tree_and_boxplots(
    tree_interactive,
    boxplot_interactive)
  )

Zoom in: Mycobacteriaceae

myco_interactive_2

Perspectivas TFM: Representar más variables

Perspectivas TFM: Aplicación Shiny

Perspectivas TFM: Enfrentar con datos externos